import axios from 'axios'
import { MessageBox, Message } from 'element-ui'
import store  from '../vuex/store.js'
import Router from '../route/index.js'
import { getToken } from '../util/auth.js';
// 请求的 前缀
import {PRE_URL} from '../util/constants.js'

// 创建axios实例
const service = axios.create({
    baseURL: PRE_URL, //URL地址   
    timeout: 10*1000 ,//超时
    withCredentials: true,  //跨域时若要发生cookie,需要设置该选项
})

// 请求拦截器
service.interceptors.request.use(
    config => {
        if(store.state.token){
            // 设置令牌请求头
            config.headers['Authorization'] = getToken()
        }
		return config
    },
    error => {
        return Promise.reject(error)
    }
)

// 相应拦截
service.interceptors.response.use(
    // 通过自定义code 判定响应状态 也可以通过HTTP状态码判断
    response =>{
        const res = response.data

        // code 不为200 则判断为一个错误
        if(res.code != 200){
            Message({
                message: res.message || "Error",
                type: 'error',
                duration: 5*1000
            })

            return Promise.reject(new Error(res.message || 'Error'));
    
        }else{
            return res;
        }
    },
    error =>{
		if(error.response.status == 504){
			Message({
			    message: "请求服务器超时，请查看服务器是不是正常启动!",
			    type: 'error',
			    duration: 5*1000
			})
			return res
		}
		
		const res = error.response.data
		Message({
		    message: res.message,
		    type: 'error',
		    duration: 5*1000
		})
		if(res.code == 606){
			//权限不足的时候直接跳转到  登录页面
			Router.push({path: '/login'})
			window.localStorage.removeItem("token")
		}
 
    }
)

export default service;